package com.gxa.service;

import com.gxa.common.R;
import com.gxa.common.vo.DiagnosisDrugVo;
import com.gxa.entity.SysDiagnosis;


public interface SysDiagnosisService {

    /**
     * 添加诊断
     * @param sysDiagnosis 诊断实体
     * @return R
     */
    R addSysDiagnosis(SysDiagnosis sysDiagnosis);

    /**
     * 分页查询所有诊断列表
     * @param currentPage 当前页
     * @param pageSize 页面大小
     * @return R
     */
    R selectAllDiagnosis(Integer currentPage, Integer pageSize);

    /**
     * 根据状态分页查询所有诊断信息
     * @param currentPage 当前页
     * @param pageSize 页面大小
     * @return R
     */
    R selectDiagnosisByStatus(Integer status,Integer currentPage, Integer pageSize);

    /**
     * 根据患者名字查询所有诊断信息
     * @param name 患者名
     * @param currentPage 当前页
     * @param pageSize 页面大小
     * @return R
     */
    R findDiagnosisByPatientCondition(String name,Integer currentPage, Integer pageSize);


    /**
     * 根据诊断编号查找诊断信息
     * @param id 诊断编号
     * @return R
     */
    R selectDiagnosisById(Integer id);

    /**
     * 根据诊断编号删除诊断信息
     * @param id 诊断编号
     * @return R
     */
    R delDiagnosisById(Integer id);

    /**
     * 修改诊断信息
     * @param sysDiagnosis 诊断实体
     * @return R
     */
    R updateDiagnosisById(SysDiagnosis sysDiagnosis);

    /**
     * 根据诊断编号分页查询诊断药品
     * @param diagnosisId 诊断编号
     * @param currentPage 当前页
     * @param pageSize 页面大小
     * @return R
     */
    R selectDiagnosisDrugById(Integer diagnosisId,Integer currentPage, Integer pageSize);

    /**
     * 根据诊断编号药品编号回显诊断药品信息
     * @param drugId 药品ID
     * @param id 诊断药品主ID
     * @return R
     */
    R findDiagnosisDrugByDrug(Integer drugId,Integer id);


     /**
     *更据诊断编号药品编号修改诊断药品数量
     * @param num 药品数量
     * @param id 诊断药品主ID
     * @return R
     */
    R updateDiagnosisDrug(Integer num,Integer id,Integer drugId);

    /**
     * 根据药品编号，诊断编号删除诊断药品信息
     * @param id 诊断ID
     * @return R
     */
    R delDiagnosisDrug(Integer id);

    /**
     * 在诊断单里面添加药品
     * @param diagnosisDrugVo 诊断药品Vo
     * @return R
     */
    R addDiagnosisDrug(DiagnosisDrugVo diagnosisDrugVo);

    /**
     * 根据类型统计信息
     * @return R
     */
    R countDiagnosisByType();

    /**
     * 统计所有的信息
     * @return R
     */
    R countDiagnosis();

    /**
     * 统计所有药品信息
     * @param type 诊断类型
     * @return R
     */
    R countDiagnosisDrugs(Byte type);

    /**
     * 统计月报表
     * @param type 诊断类型
     * @return R
     */
    R countDiagnosisMonth(Byte type);

    /**
     * 统计日报表
     * @param type 诊断类型
     * @return R
     */
    R countDiagnosisMonthDay(Byte type);

    /**
     * 统计所有诊断数量
     * @return R
     */
    R countAllDiagnosis();

    /**
     * 统计周所有诊断数量
     * @return R
     */
    R countWeekDiagnosis();


    /**
     * 根据条件模糊查询
     * @param currentPage 当前页
     * @param pageSize 每页大小
     * @param condition 条件
     * @return R
     */
    R findDiagDrugByCondition(Integer currentPage, Integer pageSize,String condition,Integer diagnosisId);

}
